﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Sympol
{
    internal  class StatmentHost
    {


      

        
        internal class Statement
        {
            public class Assignment : IExpression
            {
                public Scope Scope { get; set; }       
                public IEnumerable<string> LeftOperand { get; set; }
                public IExpression RightOperand { get; set; }
                public IValue Evaluate()
                {
                    //find the left variable
                    //execute the value
                    //deassign and assign the left value to the evaluation of the right
                    //return the left variable
                    throw new NotImplementedException();
                }
            }

            public class Call : IExpression
            {
                public IFunctionValue Method { get; set; }
                public IEnumerable<IExpression> Params { get; set; }

                public IValue Evaluate()
                {
                    //find method 
                    //execute it with the values and return
                    throw new NotImplementedException();
                }
            }

            public class ArrayDeclaration
            {
                    
            }

            public class ObjectDeclaration
            {
                
            }

            public class FunctionDeclaration
            {
                
            }
            public class Return : IExpression
            {
                public IExpression RightOperand { get; set; }

                public IValue Evaluate()
                {
                    return RightOperand.Evaluate();
                }
            }
            
        }


    }
}
